home *** CD-ROM | disk | FTP | other *** search
- Program SSswitch;
-
- (****************************************************************)
- (* *)
- (* Screen Saver Switch *)
- (* Minimized app that allows temporary turning off of *)
- (* Windows 3.1 Screen Saver. *)
- (* *)
- (* 8/20/92 Peter Franchuk Rochester,NY *)
- (* [76476,1414] *)
- (****************************************************************)
-
- uses winprocs,wintypes,Wobjects,win31;
-
- {$R ssswitch.res}
-
- const
- cm_Switof = 100;
- cm_Switon = 101;
- cm_About = 102;
- cm_Top = 103;
- cm_BNow = 104;
- cmw_Switof = 200;
- cmw_Switon = 201;
- cmw_About = 202;
- cmw_Top = 203;
- cmw_Bnow = 204;
-
-
- type
-
- { Define a TApplication descendant }
- TNoSavr = object(TApplication)
- procedure InitMainWindow; virtual;
- end;
-
- { Define Main window iconic}
-
- PMainWnd=^TMainWnd;
- TMainWnd=Object(TWindow)
- Foundit,Doit,topper:Bool;
- itson,itsoff:hIcon;
- constructor init;
- procedure SetupWindow;virtual;
- function GetClassName:PChar; virtual;
- procedure GetWindowClass(var AWndClass: TWndClass); virtual;
- destructor Done;Virtual;
- procedure WMSyscommand(var Msg:TMessage);
- virtual wm_First + wm_Syscommand;
- procedure WMQueryOpen(var Msg:TMessage);
- virtual wm_First + wm_QueryOpen;
- procedure CMSwitof(var msg:TMessage);
- virtual cm_First + cm_Switof;
- procedure CMSwiton(var msg:TMessage);
- virtual cm_First + cm_Switon;
- procedure CMAbout(var msg:TMessage);
- virtual cm_First +cm_About;
- procedure CMTop(var msg:TMessage);
- virtual cm_First + cm_Top;
- procedure CMBNow(var msg:TMessage);
- virtual cm_First + cm_BNow;
- procedure ShutDown;
- end;
-
-
- constructor TMainWnd.init;
- begin
- TWindow.init(nil,'ScrnSave'); {Get the curren state of Screen Saver}
- SystemParametersInfo(SPI_GetScreenSaveActive,0,@Foundit,0);
- Doit := foundit;
- topper := true;
- end;
-
- procedure TMainWnd.SetupWindow;
- var
- SysMenu : hMenu;
- begin
- TWindow.SetupWindow; {Expand the System menu}
- SysMenu := GetSystemMenu(hWindow,false);
- DeleteMenu(SysMenu,sc_Restore,mf_ByCommand);
- DeleteMenu(SysMenu,sc_Size,mf_ByCommand);
- DeleteMenu(SysMenu,sc_Minimize,mf_ByCommand);
- DeleteMenu(SysMenu,sc_Maximize,mf_ByCommand);
- AppendMenu(SysMenu,mf_Separator,0,nil);
- AppendMenu(SysMenu,mf_Grayed,cmw_Switon,'Enable');
- AppendMenu(SysMenu,mf_Enabled,cmw_Switof,'Disable');
- AppendMenu(SysMenu,mf_Separator,0,nil);
- AppendMenu(SysMenu,mf_Enabled,cmw_About,'About');
- AppendMenu(SysMenu,mf_Separator,0,nil);
- AppendMenu(SysMenu,mf_Enabled,cmw_BNow,'Blank Now');
- AppendMenu(SysMenu,mf_Enabled,cmw_Top,'Always on top');
- CheckMenuItem(SysMenu,cmw_Top,mf_byCommand or mf_Checked);
-
- { We Initialize with the Icon Always on top}
- SetWindowPos(hWindow,HWND_TOPMOST,0,0,0,0,SWP_NoMove or SWP_NoSize);
-
- { We start with the Screen saver enabled}
- SystemParametersInfo(SPI_SetScreenSaveActive,Word(Doit),nil,0);
- { If it wasn't on we bail out}
- if not Foundit then shutdown;
- end;
-
- function TMainWnd.GetClassName:PChar;
- begin GetClassName := 'ScrStop' end;
-
- procedure TMainWnd.GetWindowClass(var AWndClass:TwndClass);
- begin
- Twindow.GetWindowClass(AWndClass);
- itson := LoadIcon(hInstance,'SSon');
- itsoff := LoadIcon(hInstance,'SSoff'); {Get our two Icons}
- AWndClass.hIcon := itson;
- end;
-
- procedure TMainWnd.ShutDown;
- const
- BadMsg='You MUST have Screen Blanker ON. '+#13+'Use Desktop under Control Program. ';
- begin
- MessageBeep(mb_IconStop);
- MessageBox(hWindow,BadMsg,'Aborting',mb_Ok or mb_IconStop);
- PostQuitMessage(0);
- end;
-
- destructor TMainWnd.Done;
- begin { Restore Screen Saver to how we found it}
- SystemParametersInfo(SPI_SetScreenSaveActive,Word(Foundit),nil,0);
- TWindow.Done;
- end;
-
-
- procedure TMainWnd.WMSyscommand(var Msg:TMessage);
- begin
- case msg.wparam of { Handle our new system menu cmds}
- cmw_About: SendMessage(hWindow,wm_Command,cm_About,0);
- cmw_Switon: SendMessage(hWindow,wm_Command,cm_Switon,0);
- cmw_Switof: SendMessage(hWindow,wm_Command,cm_Switof,0);
- { cmw_BNow: SendMessage(hWindow,wm_Command,cm_BNow,0);} {don't know how yet}
- cmw_Top: SendMessage(hWIndow,wm_Command,cm_Top,0);
- else DefWndProc(msg);
- end;
- end;
-
- procedure TMainWnd.WMQueryOpen(var Msg:TMessage);
- begin
- msg.result :=0; { Keep the window as an Icon}
- end;
-
- procedure TMainWnd.CMSwiton(var MSG:TMessage);
- var
- SysMenu : hMenu; { Turn Screen save on}
- begin { Adjust menu and icon}
- SysMenu := GetSystemMenu(hWindow,false);
- SetClassWord(HWindow,gcw_HIcon,itson);
- EnableMenuItem(SysMenu,cmw_Switon,mf_byCommand or mf_Grayed);
- EnableMenuItem(SysMenu,cmw_Switof,mf_byCommand or mf_Enabled);
- Doit := true;
- SystemParametersInfo(SPI_SetScreenSaveActive,Word(Doit),nil,0);
- InvalidateRect(hWindow,nil,true);
- end;
-
- procedure TMainWnd.CMSwitof(var MSG:TMessage);
- var
- SysMenu : hMenu; { Turn Screen Save off}
- begin { Adjust menu and icon}
- SysMenu := GetSystemMenu(hWindow,false);
- SetClassWord(HWindow,gcw_HIcon,itsoff);
- EnableMenuItem(SysMenu,cmw_Switof,mf_byCommand or mf_Grayed);
- EnableMenuItem(SysMenu,cmw_Switon,mf_byCommand or mf_Enabled);
- Doit := false;
- SystemParametersInfo(SPI_SetScreenSaveActive,word(Doit),nil,0);
- InvalidateRect(hWindow,nil,true);
- end;
-
- procedure TMainWnd.CMAbout(var msg:Tmessage);
- var D:PDialog;
- begin { VERY short info}
- d := New(Pdialog,init(@self,'ABOUT'));
- application^.execdialog(d);
- end;
-
- procedure TMainWnd.CMBNow(var msg:TMessage);
- var
- HoldTime:word; { Blank it now}
- begin
- MessageBeep(mb_IconAsterisk);
- MessageBox(hWindow,'Not Yet Implemented','Sorry',mb_ok or mb_IconAsterisk);
- CMSwiton(msg);
- end;
-
- procedure TMainWnd.CMTop(var msg:TMessage);
- var
- SysMenu : hMenu; { Stay on top or not toggle}
- begin
- SysMenu := GetSystemMenu(hWindow,false);
- topper := not topper;
- if topper=true
- then begin
- CheckMenuItem(SysMenu,cmw_Top,mf_byCommand or mf_Checked);
- SetWindowPos(hWindow,HWND_TOPMOST,0,0,0,0,SWP_NoMove or SWP_NoSize);
- end else
- begin
- CheckMenuItem(SysMenu,cmw_Top,mf_byCommand or mf_UnChecked);
- SetWindowPos(hWindow,HWND_NOTOPMOST,0,0,0,0,SWP_NoMove or SWP_NoSize);
- end
- end;
-
- { Construct the App's MainWindow object }
- procedure TNoSavr.InitMainWindow;
- begin
- MainWindow := New(PMainWnd, Init);
- end;
-
- var
- HApp:TNoSavr;
-
- BEGIN
-
- CmdShow := sw_ShowMinimized; {start out iconic}
-
- HApp.Init('HelloApp');
- HApp.Run;
- HApp.Done;
- END.
-